import akshare as ak
import pandas as pd

# 定义你关心的基金代码列表
my_fund_list = ['005827', '161725', '001186']  # 示例：易方达蓝筹精选、招商中证白酒、万家行业优选

print("正在从天天基金网获取所有基金的实时估值数据...")
try:
    # 开启 pandas 的 long_string 功能，防止内容显示不全
    pd.set_option('display.max_rows', None)

    # 获取所有基金的实时估值数据
    # 这个过程可能需要几秒钟，因为它要获取数千只基金的数据
    all_funds_realtime_df = ak.fund_open_fund_gz_em()

    # 从获取到的所有基金数据中，筛选出我们关心的基金
    # 使用 .isin() 方法可以高效地进行筛选
    my_funds_df = all_funds_realtime_df[all_funds_realtime_df['基金代码'].isin(my_fund_list)].copy()

    # 将估算涨跌幅转换为数值，方便后续处理
    my_funds_df['估算涨跌幅'] = pd.to_numeric(my_funds_df['估算涨跌幅'])

    print("\n您关注的基金实时估值如下：")

    # 为了更好的显示效果，可以重置索引
    my_funds_df.reset_index(drop=True, inplace=True)

    print(my_funds_df)

except Exception as e:
    print(f"\n获取数据失败，错误信息: {e}")
    print("请检查网络连接，或确认当前是否为交易时段。")